<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*
        综合练习

        学生成绩统计。学生有如下几个初始成绩

        1. 平时成绩，每个学生都是一样90；以100制成绩算。
        2. 实训报告成绩，随机产生[0, 30]的整数，且要保证10人在15分以上。这个成绩是30分制。
        3. 考试成绩，随机产生[0, 70]的整数，且要保证10人在>=60。这个成绩是70分制。

        现需要将三个成绩全部换算成100制成绩，且以"平时成绩*10% + 报告成绩 * 20% + 考试成绩 * 70%"的方式，计算出学生的总成绩。并统计如下信息。（小数只保留2位，且四舍五入）
        90 — 100    （优） 10 人   27.03 %
        80 — 89     （良）  12 人   32.43%
        70 — 79     （中）  15 人   40.54 %
        60 — 69   （及格）     人        %
        60 分以下（不及格）        人        %
     */

    let array = [];
    // let count15 = 0; // 记录实训报告成绩在15分以上的同学个数
    // let count60 = 0; // 记录考试成绩在60分以上的同学个数
    let array15 = [];// 记录实训报告成绩不在15分以上的同学
    let array60 = [];// 记录考试成绩不在60分以上的同学
    // 给学生一个初始成绩
    for (let i = 0; i < 56; i++) {
        let obj = {};
        obj.name = "s" + i; // 学生姓名
        obj.ps = 90; // 平时成绩
        obj.sxbg = Math.floor(Math.random() * 31); // 实训报告成绩
        obj.ks = Math.floor(Math.random() * 71); // 考试成绩
        obj.score = 0; // 总成绩
        if (obj.sxbg <= 15) {
            // count15++;
            array15.push(obj);
        }
        if (obj.ks < 60) {
            // count60++;
            array60.push(obj);
        }
        array.push(obj);
    }
    console.log(array);
    console.log(array15);
    console.log(array60);
    // 判断是否达到人数要求
    // 实训报告成绩在15分以上的同学个数
    let count15 = array.length - array15.length;
    console.log("count15", count15);
    while (count15 < 10) {
        let r = Math.floor(Math.random() * array15.length);
        array15[r].sxbg = Math.floor(Math.random() * 16) + 15;
        count15++;
    }
    console.log("count15", count15);
    // 考试成绩>=60的同学个数
    let count60 = array.length - array60.length;
    console.log("count60", count60);
    while (count60 < 10) {
        let r = Math.floor(Math.random() * array60.length); // [0, array60.length - 1]
        array60[r].ks = Math.floor(Math.random() * 41) + 60;
        count60++;
    }
    console.log("count60", count60);

    let countY = 0; // 统计成绩在[90, 100]
    let countL = 0; // 统计成绩在[80, 89]
    let countZ = 0; // 统计成绩在[70, 79]
    let countJG = 0; // 统计成绩在[60, 69]
    let countBJG = 0; // 统计成绩在60以下
    array.forEach(function (value) {
        //换算成100制
        value.sxbg = value.sxbg / 30 * 100;
        value.ks = value.ks / 70 * 100;
        value.score = value.ps * 0.1 + value.sxbg * 0.2 + value.ks * 0.7;
        if (value.score >= 90 && value.score <= 100) {
            countY++;
        } else if (value.score >= 80 && value.score <= 89) {
            countL++;
        } else if (value.score >= 70 && value.score <= 79) {
            countZ++;
        } else if (value.score >= 60 && value.score <= 69) {
            countJG++;
        } else {
            countBJG++
        }
    });
    console.log(`
        优：${countY}， 良：${countL}，中：${countZ}，及格：${countJG}，不及格：${countBJG}
    `);
</script>
</body>
</html>